import axios from 'axios'
import { useUserStore } from '@/stores'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
const router = useRouter()

const baseURL = 'http://big-event-vue-api-t.itheima.net'

const request = axios.create({
  // TODO 1. 基础地址，超时时间
  baseURL,
  timeout: 50000
})

request.interceptors.request.use(
  (config) => {
    // TODO 2. 携带token
    const userStore = useUserStore()
    if (userStore.token) {
      // 有token给请求头加token
      config.headers.Authorization = userStore.token
    }
    return config
  },
  (err) => Promise.reject(err)
)

request.interceptors.response.use(
  (res) => {
    // TODO 3. 处理业务失败,提示信息
    if (res.data.code === 0) {
      //业务状态成功是0
      return res
    }
    ElMessage({ message: res.data.message || '服务异常', type: 'error' })
    // TODO 4. 摘取核心响应数据
    return Promise.reject(res.data)
  },
  (err) => {
    // TODO 5. 处理401错误
    if (err.response?.status === 401) {
      router.push('/login')
    }
    ElMessage({ message: err.response?.data?.message || '服务异常', type: 'error' })
    return Promise.reject(err)
  }
)

// request.interceptors.request.use(
//   (config) => {
//     const userStore = useUserStore()
//     if (userStore.token) {
//       config.headers.Authorization = userStore.token
//     }
//     return config
//   },
//   (err) => Promise.reject(err)
// )

// request.interceptors.response.use(
//   (res) => {
//     if (res.data.code === 0) {
//       return res
//     }
//     ElMessage({ message: res.data.message || '服务异常', type: 'error' })
//     return Promise.reject(res.data)
//   },
//   (err) => {
//     console.log(err)
//     if (err.response?.status === 401) {
//       router.push('/login')
//     }
//     ElMessage({ message: err.response.data.message || '服务异常', type: 'error' })
//     return Promise.reject(err)
//   }
// )

export default request
export { baseURL }
